import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;

import org.junit.After;
import org.junit.Before;
import org.junit.Test;

import com.ikaihuo.imfans.redis.models.Account;
import com.jfinal.plugin.redis.Redis;
import com.jfinal.plugin.redis.ShardCache;
import com.jfinal.plugin.redis.ShardRedisPlugin;

import redis.clients.jedis.JedisShardInfo;


public class RedisTester {
	
	public static class Ac {
		
	}

	@Before
	public void setUp() throws Exception {
	}

	@After
	public void tearDown() throws Exception {
	}

	@SuppressWarnings({ "rawtypes", "unchecked" })
	@Test
	public void test() {
//		RedisPlugin redis250 = new RedisPlugin("zcq", "192.168.1.250",6379,12340,"redisadmin");
//		redis250.start();
//		
//		Cache cache = Redis.use();
//
//		List a = new ArrayList();
//		a.add("a");
//		a.add("b");
//		cache.lpush("zc", a.toArray());
//		
//		List ret = cache.lrange("zc", 0, -1);
//		System.out.println(ret);
//		
		// 生成多机连接信息列表
		List<JedisShardInfo> shards = new ArrayList<JedisShardInfo>();
		
		JedisShardInfo shard = new JedisShardInfo("192.168.1.250", 6379);
		shard.setPassword("redisadmin");
		shards.add( shard );
		ShardRedisPlugin redis250  = new ShardRedisPlugin(shards);
		redis250.start();
		ShardCache cache = Redis.userShard();
		
		Account ac = new Account();
		ac.setUid("1212").setUtype(1);
		cache.hmset("zcq:12:12", ac);
		

		Map<String, Object> m = new HashMap<String, Object>();
		m.put("uid", "1131231312");
		m.put("utype",2);
		
		Account ac11 = new Account(m);
		System.out.println(ac11);
		cache.hmset("zcq:12:1211", ac11);
		
//		System.out.println(new Account(cache.hgetAll("zcq:12:1211")));

		System.out.println("ac ="+ac.hashCode());
		
		ac = new Account();
		cache.hset("zcqzcq", ac, "");
		Map m_ = cache.hgetAll("zcqzcq");
		Set<Account> set = m_.keySet();
		for (Account account : set) {
			System.out.println("account ="+account.hashCode()+" eq"+(ac.equals(account)));
		}
		
		System.out.println(m_);
		m_.remove(ac);
		System.out.println(m_);
		
		cache.lpush("zzzzzz", "1111");
		System.out.println(cache.lrange("zzzzzz", 0, -1));
		
//		// 生成连接池配置信息
//		JedisPoolConfig config = new JedisPoolConfig();
//		config.setMaxIdle(10);
//		config.setMaxTotal(30);
//		config.setMaxWaitMillis(3*1000);
//
//		// 在应用初始化的时候生成连接池
//		ShardedJedisPool pool = new ShardedJedisPool(config, shards);
//
//		// 在业务操作时，从连接池获取连接
//		ShardedJedis client = pool.getResource();
//		try {
//		    // 执行指令
//		    String result = client.set("key-string", "Hello, Redis!");
//		    System.out.println( String.format("set指令执行结果:%s", result) );
//		    String value = client.get("key-string");
//		    System.out.println( String.format("get指令执行结果:%s", value) );
//		} catch (Exception e) {
//		    // TODO: handle exception
//			e.printStackTrace();
//		} finally {
//		    // 业务操作完成，将连接返回给连接池
//		    if (null != client) {
//		        pool.returnResource(client);
//		    }
//		} // end of try block
//
//		// 应用关闭时，释放连接池资源
//		pool.destroy();
		
//		BaseProfile s = new BaseProfile();
//		s.setAvatar("star_avatar");
//		s.setCa(1);
//		s.setNickname("star_nickname");
//		s.setUid("star_111");
//		s.setUtype(IFUserTypeConsts.IF_BASKETBALL_STAR_2);
//		
//		BaseProfile u = new BaseProfile();
//		u.setAvatar("user_avatar");
//		u.setNickname("user_nickname");
//		u.setUid("user_111");u.setCa(1);
//		u.setUtype(IFUserTypeConsts.IF_FANS_1);
//		
//		String key = RedisKeyKit.getProfileHashKey(IFUserTypeConsts.IF_BASKETBALL_STAR_2);
//		
//		cache.hset(key, "star_111", s);
////		System.out.println(cache.hget(key, "star_111"));
//		
//		key = RedisKeyKit.getProfileHashKey(IFUserTypeConsts.IF_FANS_1);
//		cache.hset(key, "user_111", u);
////		System.out.println(cache.hget(key, "user_111"));
//		
//		StarMomentCommentReply comment = new StarMomentCommentReply("commentid", "评论哦", "star_111", IFUserTypeConsts.IF_BASKETBALL_STAR_2, "user_111", IFUserTypeConsts.IF_FANS_1, "123123");
//		
//		String commenthashKey = RedisKeyKit.getStarMomentCommentReplyHashKey();
//		cache.hset(commenthashKey, "commentid", comment);
////		System.out.println(cache.hget(commenthashKey, "commentid"));
//		
//		String commentIdListKey = RedisKeyKit.getStarMomentCommentReplyIdListKey(new BigInteger("1012"));
//		cache.lpush(commentIdListKey, "commentid");
//		
//		cache.set("zcq", "zcq");
//		
//		cache.hset("zzzzz", "llll", null);
		
	}

}
